package com.design.FactoryMode.mode4;

import lombok.extern.slf4j.Slf4j;

/**
 * 抽象工厂   只做了解
 *      抽象工厂是所有形态的工厂模式中最为抽象和最具一般性的一种形态。
 *      抽象工厂是指当有多个抽象角色时使用的一种工厂模式。
 *      抽象工厂模式可以向客户端提供一个接口，使客户端在不必指定产品的具体情况下，创建多个产品族中的产品对象。
 * 需求变更：
 *      之前我们发送验证码是通过类型来做判断，现在需求变更了，还有一种判断方式，那就是用户的类型，比如：管理员/普通用户。
 */
@Slf4j
public class main {

    public String sendSms(String phone, Integer type){
        final ISmsCheckFactory instance = SmsCheckFactory.createSmsInstance(type);
        boolean flag = instance.createSmsInstance().check(phone);
        if(!flag){
            log.info("不符合要求，发送失败");
            return "短信验证码发送失败";
        }
        //校验通过，下面就是发送验证码了，你可以通过异步的方式发送，比如：Mq（推荐这种），也可以同步
        log.info("发送短信验证码");
        return "发送短信验证码成功";
    }

}
